<!DOCTYPE html>
<html>
<head data-suburl="">
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
	
		<meta name="author" content="diogo" />
		<meta name="description" content="gnu-social - GNU social is a social communication software used in federated social networks. It is widely supported and has a large userbase. It is already used by the Free Software Foundation." />
		<meta name="keywords" content="go, git, self-hosted, gogs">
	
	<meta name="referrer" content="no-referrer" />
	<meta name="_csrf" content="80lnGobnq2D3uDQ_EBSAkmrb-3U6MTYwNDc5MjM2MzA5MzQ2OTY4MQ==" />
	<meta name="_suburl" content="" />
	
	
	
		<meta property="og:url" content="https://notabug.org/diogo/gnu-social" />
		<meta property="og:type" content="object" />
		<meta property="og:title" content="diogo/gnu-social">
		<meta property="og:description" content="GNU social is a social communication software used in federated social networks. It is widely supported and has a large userbase. It is already used by the Free Software Foundation.">
		<meta property="og:image" content="https://notabug.org/avatars/12290" />
	

	<link rel="shortcut icon" href="/img/favicon.png" />

	<script src="/js/jquery-1.11.3.min.js"></script>
	<script src="/js/libs/jquery.are-you-sure.js"></script>
        <link href="/img/icon-48.ico" rel="icon" type="image/x-icon" />
        <link href="/img/icon-60.png" rel="apple-touch-icon">
        <link href="/img/icon-76.png" rel="apple-touch-icon" sizes="76x76">
        <link href="/img/icon-120.png" rel="apple-touch-icon" sizes="120x120">
        <link href="/img/icon-152.png" rel="apple-touch-icon" sizes="152x152">
        <link href="/img/icon-240.png" rel="apple-touch-icon" sizes="240x240">

	<link rel="stylesheet" href="/assets/font-awesome-4.6.3/css/font-awesome.min.css">
	<link rel="stylesheet" href="/assets/octicons-4.3.0/octicons.min.css">

	
	

	

	
	<link rel="stylesheet" href="/css/semantic-2.2.13.min.css">
	<link rel="stylesheet" href="/css/gogs.css?v=6fc9e85aa88133794d3434ea74aa557a">
	<link rel="stylesheet" href="/css/notabug.css">

	
	<script src="/js/semantic-2.2.13.min.js"></script>
	<script src="/js/gogs.js?v=6fc9e85aa88133794d3434ea74aa557a"></script>

	<title>Groups - NotABug.org: Free code hosting</title>

	<meta name="theme-color" content="#428bca">

	


<noscript><style>.nojs-popup:hover > .menu { display: block ; }</style></noscript>


</head>
<body>
	<div class="full height">
		<noscript>Please enable JavaScript in your browser!</noscript>

		
			<div id="header-div" class="following bar light">
				<div class="ui container">
					<div class="ui grid">
						<div class="column">
							<div class="ui top secondary menu">
								<a class="item brand" href="/">
									<img class="ui mini image" src="/img/favicon.png">
								</a>

								
									<a class="item" href="/">Home</a>
								

								<a class="item" href="/explore/repos">Explore</a>
								

								



									<a class="notabug-item item" href="/help" rel="noreferrer">Help</a>




									<div class="right menu">
										
											<a class="item" href="/user/sign_up">
												<i class="octicon octicon-person"></i> Register
											</a>
										
										<a class="item" href="/user/login?redirect_to=%2fdiogo%2fgnu-social%2fissues%2f186">
											<i class="octicon octicon-sign-in"></i> Sign In
										</a>
									</div>

								
							</div>
						</div>
					</div>
				</div>
			</div>
		


<div class="repository view issue pull">
	<div class="header-wrapper">

	<div class="ui container">
		<div class="ui vertically padded grid head">
			<div class="column">
				<div class="ui header">
					<div class="ui huge breadcrumb">
						<i class="mega-octicon octicon-repo"></i>
						<a href="/diogo">diogo</a>
						<div class="divider"> / </div>
						<a href="/diogo/gnu-social">gnu-social</a>
						
						
					</div>

					
						<div class="ui right">
							<div class="ui labeled button" tabindex="0">
								<a class="ui basic button" href="/diogo/gnu-social/action/watch?redirect_to=%2fdiogo%2fgnu-social%2fissues%2f186">
									<i class="icon fa-eye-slash"></i>Watch
								</a>
								<a class="ui basic label" href="/diogo/gnu-social/watchers">
									9
								</a>
							</div>
							<div class="ui labeled button" tabindex="0">
								<a class="ui basic button" href="/diogo/gnu-social/action/star?redirect_to=%2fdiogo%2fgnu-social%2fissues%2f186">
									<i class="icon fa-star-o"></i>Star
								</a>
								<a class="ui basic label" href="/diogo/gnu-social/stars">
									22
								</a>
							</div>
							
								<div class="ui labeled button" tabindex="0">
									<a class="ui basic button " href="/repo/fork/25974">
										<i class="octicon octicon-repo-forked"></i>Fork
									</a>
									<a class="ui basic label" href="/diogo/gnu-social/forks">
										21
									</a>
								</div>
							
						</div>
					
				</div>
			</div>
		</div>
	</div>


	<div class="ui tabs container">
		<div class="ui tabular menu navbar">
			
				<a class=" item" href="/diogo/gnu-social">
					<i class="octicon octicon-file-text"></i> Files
				</a>
			
			
				<a class="active item" href="/diogo/gnu-social/issues">
					<i class="octicon octicon-issue-opened"></i> Issues <span class="ui blue small label">73</span>
				</a>
			
			
				<a class=" item" href="/diogo/gnu-social/pulls">
					<i class="octicon octicon-git-pull-request"></i> Pull Requests <span class="ui blue small label">3</span>
				</a>
			
			
				<a class=" item" href="/diogo/gnu-social/wiki">
					<i class="octicon octicon-book"></i> Wiki
				</a>
			
			
		</div>
	</div>
	<div class="ui tabs divider"></div>

</div>

	<div class="ui container">
		<div class="navbar">
			<div class="ui compact small menu">
	<a class=" item" href="/diogo/gnu-social/labels">Labels</a>
	<a class=" item" href="/diogo/gnu-social/milestones">Milestones</a>
</div>

			<div class="ui right">
				
					<a class="ui green button" href="/diogo/gnu-social/issues/new">New Issue</a>
				
			</div>
		</div>
		<div class="ui divider"></div>
		
			<div>
				<div class="ui grid">
	
	
		<div class="sixteen wide column title">
	<div class="ui grid">
		<h1 class="twelve wide column">
			<span class="index">#186</span> <span id="issue-title" class="has-emoji">Groups</span>
			<div id="edit-title-input" class="ui input" style="display: none">
				<input value="Groups">
			</div>
		</h1>
		
	</div>
	
		<div class="ui green large label"><i class="octicon octicon-issue-opened"></i> Open</div>
	

	
		
		<span class="time-desc">
			
				opened <span class="time-since" title="Sat, 18 Jul 2020 12:44:05 UTC">3 months ago</span> by <a href="/diogo">diogo</a>
			
			·
			10 comments
		</span>
	
	<div class="ui divider"></div>
</div>

	

	
	<div class="twelve wide column comment-list">
		<ui class="ui comments">
			<div class="comment">
				<a class="avatar" href="/diogo">
					<img src="/avatars/12290">
				</a>
				<div class="content">
					<div class="ui top attached header">
						<span class="text grey"><a href="/diogo">Diogo Cordeiro</a> commented <a href="#issue-65289"><span class="time-since" title="Sat, 18 Jul 2020 12:44:05 UTC">3 months ago</span></a></span>
						<div class="ui right actions">
							
						</div>
					</div>
					<div class="ui attached segment">
						<div class="render-content markdown has-emoji">
							
								<p><strong>Aim</strong>: Making GNU social more welcoming and robust for communities.</p>

<p><strong>SoTA</strong>: Federation of groups is being avoided by alternative software and has been proven problematic after the death of big instances like qvitter because one couldn&#39;t target groups hosted at qvitter anymore nor contact the whole subscribers list to let them know of the new instance hosting a certain group.</p>

<p><strong>Abstract</strong>: The solution we propose here is to have umbrella/meta groups being logically created in every instance that will collapse groups that are meant to be decentralized into an unit.</p>

<p>The structure of these meta/umbrella groups would rely on having a set of known groups with the same name that are meant to be decentralized, e.g.:</p>

<table>
<thead>
<tr>
<th>uri</th>
<th>should_decentralize</th>
<th>unique_name</th>
</tr>
</thead>

<tbody>
<tr>
<td>A@A</td>
<td>true</td>
<td>A</td>
</tr>

<tr>
<td>A@ldavg</td>
<td>true</td>
<td>A</td>
</tr>

<tr>
<td>A@HaP</td>
<td>true</td>
<td>A</td>
</tr>

<tr>
<td>A@B</td>
<td>false</td>
<td>A</td>
</tr>
</tbody>
</table>

<p>In this example set, ldavg would merge the first three entries into one big group named !A. To interact with A@B, one would have to specify this full uri.</p>

<p>What about aliases? They now would be created by each individual actor of type person and have to be suffixed with <code>@alias</code>. Thus solving any potential ambiguity/collision issue.</p>

<p>How are we going to upgrade existing groups from v2 to v3? By default they will be set with should_decentralize=false. An admin can easily change that.</p>

<p>If a user tries to target a non-existent group in a message, it will go without mentioning any group.</p>

<p>If a meant to be decentralized group is found, an umbrella group will be automatically created and the admin will be the first person to take it over by clicking on a button &#34;Become administrator&#34;. A local umbrella group can live without an admin.</p>

<p>We can easily have remote actor with moderator permissions in local groups. So moderation of an umbrella group is made by decentralized moderation, moderation permission requests from local admins will be automagically federated.</p>

							
						</div>
						<div class="raw-content hide">**Aim**: Making GNU social more welcoming and robust for communities.

**SoTA**: Federation of groups is being avoided by alternative software and has been proven problematic after the death of big instances like qvitter because one couldn&#39;t target groups hosted at qvitter anymore nor contact the whole subscribers list to let them know of the new instance hosting a certain group.

**Abstract**: The solution we propose here is to have umbrella/meta groups being logically created in every instance that will collapse groups that are meant to be decentralized into an unit.

The structure of these meta/umbrella groups would rely on having a set of known groups with the same name that are meant to be decentralized, e.g.:

uri     | should_decentralize | unique_name
--------|---------------------|------------
A@A     | true                | A
A@ldavg | true                | A
A@HaP   | true                | A
A@B     | false               | A

In this example set, ldavg would merge the first three entries into one big group named !A. To interact with A@B, one would have to specify this full uri.

What about aliases? They now would be created by each individual actor of type person and have to be suffixed with `@alias`. Thus solving any potential ambiguity/collision issue.

How are we going to upgrade existing groups from v2 to v3? By default they will be set with should_decentralize=false. An admin can easily change that.

If a user tries to target a non-existent group in a message, it will go without mentioning any group.

If a meant to be decentralized group is found, an umbrella group will be automatically created and the admin will be the first person to take it over by clicking on a button &#34;Become administrator&#34;. A local umbrella group can live without an admin.

We can easily have remote actor with moderator permissions in local groups. So moderation of an umbrella group is made by decentralized moderation, moderation permission requests from local admins will be automagically federated.</div>
						<div class="edit-content-zone hide" data-write="issue-65289-write" data-preview="issue-65289-preview" data-update-url="/diogo/gnu-social/issues/186/content" data-context="/diogo/gnu-social"></div>
					</div>
					
				</div>
			</div>

			
				

				
				
					<div class="comment" id="issuecomment-20111">
						<a class="avatar" href="/thndrbvr">
							<img src="/avatars/43539">
						</a>
						<div class="content">
							<div class="ui top attached header">
								<span class="text grey"><a href="/thndrbvr">Thunder Beaver</a> commented <a href="#issuecomment-20111"><span class="time-since" title="Sat, 18 Jul 2020 17:22:18 UTC">3 months ago</span></a></span>
								<div class="ui right actions">
									
									
								</div>
							</div>
							<div class="ui attached segment">
								<div class="render-content markdown has-emoji">
									
										<p>Sounds good aside from &#34;<a href="/aslias" rel="nofollow">@aslias</a> __ &#34; if that&#39;s what a user has to type. &#34;!__ &#34; was good, why can&#39;t we keep that?
Suggestion use &#34;!!__ &#34; instead if aliases need a different command.</p>

<p>Also, I made most of my Groups original names as 2-3 characters
I.e. 1nf with the whole name as &#34;First Nation Freaks&#34; and an alias like &#34;ndns&#34; (how we&#39;ve taken the silly &#34;Indians&#34; name to be our own).</p>

									
								</div>
								<div class="raw-content hide">Sounds good aside from &#34;@aslias __ &#34; if that&#39;s what a user has to type. &#34;!__ &#34; was good, why can&#39;t we keep that?
Suggestion use &#34;!!__ &#34; instead if aliases need a different command.

Also, I made most of my Groups original names as 2-3 characters 
I.e. 1nf with the whole name as &#34;First Nation Freaks&#34; and an alias like &#34;ndns&#34; (how we&#39;ve taken the silly &#34;Indians&#34; name to be our own).</div>
								<div class="edit-content-zone hide" data-write="issuecomment-20111-write" data-preview="issuecomment-20111-preview" data-update-url="/diogo/gnu-social/comments/20111" data-context="/diogo/gnu-social"></div>
							</div>
							
						</div>
					</div>
				

			
				

				
				
					<div class="comment" id="issuecomment-20121">
						<a class="avatar" href="/someonewithpc">
							<img src="https://seccdn.libravatar.org/avatar/89baac3327aebd79156eb67a9db545e6">
						</a>
						<div class="content">
							<div class="ui top attached header">
								<span class="text grey"><a href="/someonewithpc">someonewithpc</a> commented <a href="#issuecomment-20121"><span class="time-since" title="Sat, 18 Jul 2020 21:01:01 UTC">3 months ago</span></a></span>
								<div class="ui right actions">
									
										<div class="item tag">
											
												Collaborator
											
										</div>
									
									
								</div>
							</div>
							<div class="ui attached segment">
								<div class="render-content markdown has-emoji">
									
										<p><a href="/thndrbvr" rel="nofollow">@thndrbvr</a> I think you misunderstood Diogo, he suggested a suffix, not a prefix, but yes, !!foo as an alias for !bar is a much better solution.</p>

									
								</div>
								<div class="raw-content hide">@thndrbvr I think you misunderstood Diogo, he suggested a suffix, not a prefix, but yes, !!foo as an alias for !bar is a much better solution. </div>
								<div class="edit-content-zone hide" data-write="issuecomment-20121-write" data-preview="issuecomment-20121-preview" data-update-url="/diogo/gnu-social/comments/20121" data-context="/diogo/gnu-social"></div>
							</div>
							
						</div>
					</div>
				

			
				

				
				
					<div class="comment" id="issuecomment-20125">
						<a class="avatar" href="/thndrbvr">
							<img src="/avatars/43539">
						</a>
						<div class="content">
							<div class="ui top attached header">
								<span class="text grey"><a href="/thndrbvr">Thunder Beaver</a> commented <a href="#issuecomment-20125"><span class="time-since" title="Sun, 19 Jul 2020 01:56:58 UTC">3 months ago</span></a></span>
								<div class="ui right actions">
									
									
								</div>
							</div>
							<div class="ui attached segment">
								<div class="render-content markdown has-emoji">
									
										<p>Ohhh I see. Okay.</p>

<p>Now, I&#39;m wondering... What happens if an actor of any type has the same name as a group? Will there be any conflicts?</p>

									
								</div>
								<div class="raw-content hide">Ohhh I see. Okay.

Now, I&#39;m wondering... What happens if an actor of any type has the same name as a group? Will there be any conflicts? </div>
								<div class="edit-content-zone hide" data-write="issuecomment-20125-write" data-preview="issuecomment-20125-preview" data-update-url="/diogo/gnu-social/comments/20125" data-context="/diogo/gnu-social"></div>
							</div>
							
						</div>
					</div>
				

			
				

				
				
					<div class="comment" id="issuecomment-20133">
						<a class="avatar" href="/someonewithpc">
							<img src="https://seccdn.libravatar.org/avatar/89baac3327aebd79156eb67a9db545e6">
						</a>
						<div class="content">
							<div class="ui top attached header">
								<span class="text grey"><a href="/someonewithpc">someonewithpc</a> commented <a href="#issuecomment-20133"><span class="time-since" title="Sun, 19 Jul 2020 09:36:18 UTC">3 months ago</span></a></span>
								<div class="ui right actions">
									
										<div class="item tag">
											
												Collaborator
											
										</div>
									
									
								</div>
							</div>
							<div class="ui attached segment">
								<div class="render-content markdown has-emoji">
									
										<p>No, that shouldn&#39;t be a problem (because one uses @ and the other !)</p>

									
								</div>
								<div class="raw-content hide">No, that shouldn&#39;t be a problem (because one uses @ and the other !) </div>
								<div class="edit-content-zone hide" data-write="issuecomment-20133-write" data-preview="issuecomment-20133-preview" data-update-url="/diogo/gnu-social/comments/20133" data-context="/diogo/gnu-social"></div>
							</div>
							
						</div>
					</div>
				

			
				

				
				
					<div class="comment" id="issuecomment-20134">
						<a class="avatar" href="/diogo">
							<img src="/avatars/12290">
						</a>
						<div class="content">
							<div class="ui top attached header">
								<span class="text grey"><a href="/diogo">Diogo Cordeiro</a> commented <a href="#issuecomment-20134"><span class="time-since" title="Sun, 19 Jul 2020 10:30:34 UTC">3 months ago</span></a></span>
								<div class="ui right actions">
									
										<div class="item tag">
											
												Owner
											
										</div>
									
									
								</div>
							</div>
							<div class="ui attached segment">
								<div class="render-content markdown has-emoji">
									
										<p>On the other hand, we would like to have Application, Organization and Service... We are running out of symbols! :&#39;)</p>

									
								</div>
								<div class="raw-content hide">On the other hand, we would like to have Application, Organization and Service... We are running out of symbols! :&#39;)</div>
								<div class="edit-content-zone hide" data-write="issuecomment-20134-write" data-preview="issuecomment-20134-preview" data-update-url="/diogo/gnu-social/comments/20134" data-context="/diogo/gnu-social"></div>
							</div>
							
						</div>
					</div>
				

			
				

				
				
					<div class="comment" id="issuecomment-20135">
						<a class="avatar" href="/someonewithpc">
							<img src="https://seccdn.libravatar.org/avatar/89baac3327aebd79156eb67a9db545e6">
						</a>
						<div class="content">
							<div class="ui top attached header">
								<span class="text grey"><a href="/someonewithpc">someonewithpc</a> commented <a href="#issuecomment-20135"><span class="time-since" title="Sun, 19 Jul 2020 11:24:22 UTC">3 months ago</span></a></span>
								<div class="ui right actions">
									
										<div class="item tag">
											
												Collaborator
											
										</div>
									
									
								</div>
							</div>
							<div class="ui attached segment">
								<div class="render-content markdown has-emoji">
									
										<p><a href="/diogo" rel="nofollow">@diogo</a> aren&#39;t those just actors, hence acting like users (i.e. @)</p>

									
								</div>
								<div class="raw-content hide">@diogo aren&#39;t those just actors, hence acting like users (i.e. @)</div>
								<div class="edit-content-zone hide" data-write="issuecomment-20135-write" data-preview="issuecomment-20135-preview" data-update-url="/diogo/gnu-social/comments/20135" data-context="/diogo/gnu-social"></div>
							</div>
							
						</div>
					</div>
				

			
				

				
				
					<div class="comment" id="issuecomment-20136">
						<a class="avatar" href="/diogo">
							<img src="/avatars/12290">
						</a>
						<div class="content">
							<div class="ui top attached header">
								<span class="text grey"><a href="/diogo">Diogo Cordeiro</a> commented <a href="#issuecomment-20136"><span class="time-since" title="Sun, 19 Jul 2020 11:47:51 UTC">3 months ago</span></a></span>
								<div class="ui right actions">
									
										<div class="item tag">
											
												Owner
											
										</div>
									
									
								</div>
							</div>
							<div class="ui attached segment">
								<div class="render-content markdown has-emoji">
									
										<p><a href="/someonewithpc" rel="nofollow">@someonewithpc</a> groups are actors as well, here: <a href="https://www.w3.org/TR/activitystreams-vocabulary/#actor-types" rel="nofollow">https://www.w3.org/TR/activitystreams-vocabulary/#actor-types</a> . Different actor types requires different handling, but I guess the handling for the other three isn&#39;t so special as the one required for Groups, we probably don&#39;t need a special symbol for them :)</p>

									
								</div>
								<div class="raw-content hide">@someonewithpc groups are actors as well, here: https://www.w3.org/TR/activitystreams-vocabulary/#actor-types . Different actor types requires different handling, but I guess the handling for the other three isn&#39;t so special as the one required for Groups, we probably don&#39;t need a special symbol for them :)</div>
								<div class="edit-content-zone hide" data-write="issuecomment-20136-write" data-preview="issuecomment-20136-preview" data-update-url="/diogo/gnu-social/comments/20136" data-context="/diogo/gnu-social"></div>
							</div>
							
						</div>
					</div>
				

			
				

				
				
					<div class="comment" id="issuecomment-20138">
						<a class="avatar" href="/diogo">
							<img src="/avatars/12290">
						</a>
						<div class="content">
							<div class="ui top attached header">
								<span class="text grey"><a href="/diogo">Diogo Cordeiro</a> commented <a href="#issuecomment-20138"><span class="time-since" title="Sun, 19 Jul 2020 15:07:21 UTC">3 months ago</span></a></span>
								<div class="ui right actions">
									
										<div class="item tag">
											
												Owner
											
										</div>
									
									
								</div>
							</div>
							<div class="ui attached segment">
								<div class="render-content markdown has-emoji">
									
										<p>On terminology regarding the group meant to be under an umbrella attribute, rozzin came up with the following on IRC:</p>

<pre><code>[rozzin] &gt; GNU social may need a property in the group actor indicating whether it is meant to be decentralized or not.
[rozzin] While technically this is an OK-ish application of that the term &#34;decentralized&#34; because the context, at least if the reader is paying attention, significantly narrows the set of possible specific meanings.... But I think the a better term is probably... &#34;replicated&#34;?
[diogo] Actually... we replicate centralized groups, we cache them; I would say that the groups as we have them now are being replicated, while this would somehow decentralize them
[diogo] If I create a group in ldavg, ldavg is the authority for that group
[diogo] the umbrella groups would be sharing the authority among the various involved instances
[diogo] For my account, the authority is ldavg, and my posts are replicated among other instances
[diogo] but maybe I messing terms up tho, this is how I&#39;m interpreting it at the moment.
[rozzin] diogo: &#34;multimastering&#34;? https://en.m.wikipedia.org/wiki/Multi-master_replication
[rozzin] https://en.m.wikipedia.org/wiki/Multi-master_bus
[diogo] Yeah, sounds like a better term, let me add this to the issue...
[rozzin] diogo: &#34;decentralized&#34; really is a pretty generalized term that requires clarification either from context or use of more specific terms; &#34;GNU social (as a whole) is a decentralized social system&#34; is accurate without specifying/clarifying that &#34;GNU social  is decentralized specifically via federation&#34;; and there are other systems that are&#34;decentralized&#34; to the same *degree* as GNU social but not in the same *way*....
</code></pre>

									
								</div>
								<div class="raw-content hide">On terminology regarding the group meant to be under an umbrella attribute, rozzin came up with the following on IRC:

    [rozzin] &gt; GNU social may need a property in the group actor indicating whether it is meant to be decentralized or not.
    [rozzin] While technically this is an OK-ish application of that the term &#34;decentralized&#34; because the context, at least if the reader is paying attention, significantly narrows the set of possible specific meanings.... But I think the a better term is probably... &#34;replicated&#34;?
    [diogo] Actually... we replicate centralized groups, we cache them; I would say that the groups as we have them now are being replicated, while this would somehow decentralize them
    [diogo] If I create a group in ldavg, ldavg is the authority for that group
    [diogo] the umbrella groups would be sharing the authority among the various involved instances
    [diogo] For my account, the authority is ldavg, and my posts are replicated among other instances
    [diogo] but maybe I messing terms up tho, this is how I&#39;m interpreting it at the moment.
    [rozzin] diogo: &#34;multimastering&#34;? https://en.m.wikipedia.org/wiki/Multi-master_replication
    [rozzin] https://en.m.wikipedia.org/wiki/Multi-master_bus
    [diogo] Yeah, sounds like a better term, let me add this to the issue...
    [rozzin] diogo: &#34;decentralized&#34; really is a pretty generalized term that requires clarification either from context or use of more specific terms; &#34;GNU social (as a whole) is a decentralized social system&#34; is accurate without specifying/clarifying that &#34;GNU social  is decentralized specifically via federation&#34;; and there are other systems that are&#34;decentralized&#34; to the same *degree* as GNU social but not in the same *way*....</div>
								<div class="edit-content-zone hide" data-write="issuecomment-20138-write" data-preview="issuecomment-20138-preview" data-update-url="/diogo/gnu-social/comments/20138" data-context="/diogo/gnu-social"></div>
							</div>
							
						</div>
					</div>
				

			
				

				
				
					<div class="comment" id="issuecomment-20139">
						<a class="avatar" href="/diogo">
							<img src="/avatars/12290">
						</a>
						<div class="content">
							<div class="ui top attached header">
								<span class="text grey"><a href="/diogo">Diogo Cordeiro</a> commented <a href="#issuecomment-20139"><span class="time-since" title="Sun, 19 Jul 2020 15:10:25 UTC">3 months ago</span></a></span>
								<div class="ui right actions">
									
										<div class="item tag">
											
												Owner
											
										</div>
									
									
								</div>
							</div>
							<div class="ui attached segment">
								<div class="render-content markdown has-emoji">
									
										<p>This issue was shared for implementation-related discussion on <a href="https://socialhub.activitypub.rocks/t/groups-implementation/591/55?u=diogo" rel="nofollow">https://socialhub.activitypub.rocks/t/groups-implementation/591/55?u=diogo</a> and <a href="https://git.pleroma.social/pleroma/pleroma-meta/-/issues/14" rel="nofollow">https://git.pleroma.social/pleroma/pleroma-meta/-/issues/14</a></p>

									
								</div>
								<div class="raw-content hide">This issue was shared for implementation-related discussion on https://socialhub.activitypub.rocks/t/groups-implementation/591/55?u=diogo and https://git.pleroma.social/pleroma/pleroma-meta/-/issues/14</div>
								<div class="edit-content-zone hide" data-write="issuecomment-20139-write" data-preview="issuecomment-20139-preview" data-update-url="/diogo/gnu-social/comments/20139" data-context="/diogo/gnu-social"></div>
							</div>
							
						</div>
					</div>
				

			
				

				
				
					<div class="comment" id="issuecomment-20143">
						<a class="avatar" href="/diogo">
							<img src="/avatars/12290">
						</a>
						<div class="content">
							<div class="ui top attached header">
								<span class="text grey"><a href="/diogo">Diogo Cordeiro</a> commented <a href="#issuecomment-20143"><span class="time-since" title="Sun, 19 Jul 2020 18:28:37 UTC">3 months ago</span></a></span>
								<div class="ui right actions">
									
										<div class="item tag">
											
												Owner
											
										</div>
									
									
								</div>
							</div>
							<div class="ui attached segment">
								<div class="render-content markdown has-emoji">
									
										<p>Two implementation solutions were considered in IRC, one that tries to mimic exactly what was conceptualized on the opening of this issue, and one that tries to change less proposed by rozzin.</p>

<p>rozzin proposes federating the full subscribers list to every instance, when the authority instance of a group dies, the one with more local subscribers (as suggested by <a href="/aab" rel="nofollow">@aab</a>) takes over if the &#34;should_decentralize&#34; flag of that group was set to true. Every other instance would know this criteria and act accordingly. Users don&#39;t have to know the <code>@authority_instance</code> as that could be omitted for groups with such new attribute set to true.</p>

<p>a more true implementation to the concept would rely on always addressing all groups instead of an authority, i.e., for the table above, an activity would address <code>@A</code>, <code>@ldavg</code> and <code>@HaP</code> as no-one was more authority than no-one. Also, instead of federating a full subscriber list, we would probably want to federate a list of known hosts holding this group.</p>

<p>We can&#39;t be sure of anything when we have no authority (i.e., we don&#39;t have a sure way of knowing every instance involved). But with rozzin&#39;s solution, the authority will always be &#34;all-knowing&#34; and thus we have a source of trust.</p>

<p>I think rozzin&#39;s solution is true to the way these protocols usually work and not hard of implementing.</p>

									
								</div>
								<div class="raw-content hide">Two implementation solutions were considered in IRC, one that tries to mimic exactly what was conceptualized on the opening of this issue, and one that tries to change less proposed by rozzin.

rozzin proposes federating the full subscribers list to every instance, when the authority instance of a group dies, the one with more local subscribers (as suggested by @aab) takes over if the &#34;should_decentralize&#34; flag of that group was set to true. Every other instance would know this criteria and act accordingly. Users don&#39;t have to know the `@authority_instance` as that could be omitted for groups with such new attribute set to true.

a more true implementation to the concept would rely on always addressing all groups instead of an authority, i.e., for the table above, an activity would address `@A`, `@ldavg` and `@HaP` as no-one was more authority than no-one. Also, instead of federating a full subscriber list, we would probably want to federate a list of known hosts holding this group.

We can&#39;t be sure of anything when we have no authority (i.e., we don&#39;t have a sure way of knowing every instance involved). But with rozzin&#39;s solution, the authority will always be &#34;all-knowing&#34; and thus we have a source of trust.

I think rozzin&#39;s solution is true to the way these protocols usually work and not hard of implementing.</div>
								<div class="edit-content-zone hide" data-write="issuecomment-20143-write" data-preview="issuecomment-20143-preview" data-update-url="/diogo/gnu-social/comments/20143" data-context="/diogo/gnu-social"></div>
							</div>
							
						</div>
					</div>
				

			

			

			
				<div class="ui warning message">
					<a href="/user/login?redirect_to=/diogo/gnu-social/issues/186">Sign in</a> to join this conversation.
				</div>
			
		</ui>
	</div>

	<div class="four wide column">
		<div class="ui segment metas">
			<div class="ui disabled floating jump select-label dropdown">
				<span class="text">
					<strong>Labels</strong>
					<span class="octicon octicon-gear"></span>
				</span>
				<div class="filter menu" data-action="update" data-update-url="/diogo/gnu-social/issues/186/label">
					<div class="no-select item">Clear labels</div>
					
						<a class=" item" href="#" data-id="1564" data-id-selector="#label_1564"><span class="octicon "></span><span class="label color" style="background-color: #fbca04"></span> bounty</a>
					
						<a class=" item" href="#" data-id="1483" data-id-selector="#label_1483"><span class="octicon "></span><span class="label color" style="background-color: #ee0701"></span> bug</a>
					
						<a class=" item" href="#" data-id="1484" data-id-selector="#label_1484"><span class="octicon "></span><span class="label color" style="background-color: #cccccc"></span> duplicate</a>
					
						<a class=" item" href="#" data-id="1485" data-id-selector="#label_1485"><span class="octicon "></span><span class="label color" style="background-color: #84b6eb"></span> enhancement</a>
					
						<a class=" item" href="#" data-id="1486" data-id-selector="#label_1486"><span class="octicon "></span><span class="label color" style="background-color: #128a0c"></span> help wanted</a>
					
						<a class=" item" href="#" data-id="1487" data-id-selector="#label_1487"><span class="octicon "></span><span class="label color" style="background-color: #e6e6e6"></span> invalid</a>
					
						<a class=" item" href="#" data-id="1488" data-id-selector="#label_1488"><span class="octicon "></span><span class="label color" style="background-color: #cc317c"></span> question</a>
					
						<a class="checked item" href="#" data-id="1565" data-id-selector="#label_1565"><span class="octicon octicon-check"></span><span class="label color" style="background-color: #d4c5f9"></span> RFC</a>
					
						<a class="checked item" href="#" data-id="1841" data-id-selector="#label_1841"><span class="octicon octicon-check"></span><span class="label color" style="background-color: #0052cc"></span> v3</a>
					
						<a class=" item" href="#" data-id="1489" data-id-selector="#label_1489"><span class="octicon "></span><span class="label color" style="background-color: #ffffff"></span> wontfix</a>
					
				</div>
			</div>
			<div class="ui labels list">
				<span class="no-select item hide">No Label</span>
				
					<div class="item">
						<a class="ui label hide" id="label_1564" href="/diogo/gnu-social/issues?labels=1564" style="color: #000; background-color: #fbca04">bounty</a>
					</div>

				
					<div class="item">
						<a class="ui label hide" id="label_1483" href="/diogo/gnu-social/issues?labels=1483" style="color: #fff; background-color: #ee0701">bug</a>
					</div>

				
					<div class="item">
						<a class="ui label hide" id="label_1484" href="/diogo/gnu-social/issues?labels=1484" style="color: #000; background-color: #cccccc">duplicate</a>
					</div>

				
					<div class="item">
						<a class="ui label hide" id="label_1485" href="/diogo/gnu-social/issues?labels=1485" style="color: #000; background-color: #84b6eb">enhancement</a>
					</div>

				
					<div class="item">
						<a class="ui label hide" id="label_1486" href="/diogo/gnu-social/issues?labels=1486" style="color: #fff; background-color: #128a0c">help wanted</a>
					</div>

				
					<div class="item">
						<a class="ui label hide" id="label_1487" href="/diogo/gnu-social/issues?labels=1487" style="color: #000; background-color: #e6e6e6">invalid</a>
					</div>

				
					<div class="item">
						<a class="ui label hide" id="label_1488" href="/diogo/gnu-social/issues?labels=1488" style="color: #fff; background-color: #cc317c">question</a>
					</div>

				
					<div class="item">
						<a class="ui label " id="label_1565" href="/diogo/gnu-social/issues?labels=1565" style="color: #000; background-color: #d4c5f9">RFC</a>
					</div>

				
					<div class="item">
						<a class="ui label " id="label_1841" href="/diogo/gnu-social/issues?labels=1841" style="color: #fff; background-color: #0052cc">v3</a>
					</div>

				
					<div class="item">
						<a class="ui label hide" id="label_1489" href="/diogo/gnu-social/issues?labels=1489" style="color: #000; background-color: #ffffff">wontfix</a>
					</div>

				
			</div>

			<div class="ui divider"></div>

			<div class="ui disabled floating jump select-milestone dropdown">
				<span class="text">
					<strong>Milestone</strong>
					<span class="octicon octicon-gear"></span>
				</span>
				<div class="menu" data-action="update" data-update-url="/diogo/gnu-social/issues/186/milestone">
					<div class="no-select item">Clear milestone</div>
					
					
				</div>
			</div>
			<div class="ui select-milestone list">
				<span class="no-select item ">No Milestone</span>
				<div class="selected">
					
				</div>
			</div>

			<div class="ui divider"></div>

			<input id="assignee_id" name="assignee_id" type="hidden" value="">
			<div class="ui disabled floating jump select-assignee dropdown">
				<span class="text">
					<strong>Assignee</strong>
					<span class="octicon octicon-gear"></span>
				</span>
				<div class="menu" data-action="update" data-update-url="/diogo/gnu-social/issues/186/assignee">
					<div class="no-select item">Clear assignee</div>
					
				</div>
			</div>
			<div class="ui select-assignee list">
				<span class="no-select item ">No assignee</span>
				<div class="selected">
					
				</div>
			</div>

			<div class="ui divider"></div>

			<div class="ui participants">
				<span class="text"><strong>3 Participants</strong></span>
				<div>
					
						<a href="/diogo">
							<img class="ui avatar image poping up" src="/avatars/12290" data-content="Diogo Cordeiro" data-position="top center" data-variation="small inverted">
						</a>
					
						<a href="/thndrbvr">
							<img class="ui avatar image poping up" src="/avatars/43539" data-content="Thunder Beaver" data-position="top center" data-variation="small inverted">
						</a>
					
						<a href="/someonewithpc">
							<img class="ui avatar image poping up" src="https://seccdn.libravatar.org/avatar/89baac3327aebd79156eb67a9db545e6" data-content="someonewithpc" data-position="top center" data-variation="small inverted">
						</a>
					
				</div>
			</div>
		</div>
	</div>
</div>

<div class="hide" id="edit-content-form">
	<div class="ui comment form">
		<div class="ui top attached tabular menu">
			<a class="active write item">Write</a>
			<a class="preview item" data-url="/api/v1/markdown" data-context="/diogo/gnu-social">Preview</a>
		</div>
		<div class="ui bottom attached active write tab segment">
			<textarea tabindex="1" id="content" name="content"></textarea>
		</div>
		<div class="ui bottom attached tab preview segment markdown">
			Loading...
		</div>
		<div class="text right edit buttons">
			<div class="ui basic blue cancel button" tabindex="3">Cancel</div>
			<div class="ui green save button" tabindex="2">Save</div>
		</div>
	</div>
</div>

<div class="hide" id="no-content">
	<span class="no-content">There is no content yet.</span>
</div>

			</div>
		
	</div>
</div>

	</div>
	<footer>
		<div class="ui container">
			<div class="ui left">



				<a href="/tos">Terms of Service</a>
				&bull;
				<a href="/about">About us</a>
				&bull;
				<a href="/outages">Outages</a>
				&bull;
				<a href="/hp/gogs/issues">Report a problem</a>
				&bull;
				<a href="/assets/librejs/librejs.html" data-jslicense="1">Javascript licenses</a>
				&bull;
				<a href="/fingerprints">SSH Fingerprints</a>



			</div>
			<div class="ui right links">
				
				<div class="ui language bottom floating slide up dropdown link item">
					<i class="world icon"></i>
					<div class="text">English</div>
					<div class="menu">
						
							<a class="item active selected" href="#">English</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=zh-CN">简体中文</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=zh-HK">繁體中文（香港）</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=zh-TW">繁體中文（臺灣）</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=de-DE">Deutsch</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=fr-FR">français</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=nl-NL">Nederlands</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=lv-LV">latviešu</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=ru-RU">русский</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=ja-JP">日本語</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=es-ES">español</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=pt-BR">português do Brasil</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=pl-PL">polski</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=bg-BG">български</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=it-IT">italiano</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=fi-FI">suomi</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=tr-TR">Türkçe</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=cs-CZ">čeština</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=sr-SP">српски</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=sv-SE">svenska</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=ko-KR">한국어</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=gl-ES">galego</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=uk-UA">українська</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=en-GB">English (United Kingdom)</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=hu-HU">Magyar</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=sk-SK">Slovenčina</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=id-ID">Indonesian</a>
						
							<a class="item " href="/diogo/gnu-social/issues/186?lang=fa-IR">Persian</a>
						
					</div>
				</div>



				
			</div>
		</div>
	</footer>
</body>



	<link rel="stylesheet" href="/plugins/highlight-9.6.0/github.css">
	<script src="/plugins/highlight-9.6.0/highlight.pack.js"></script>




	<link rel="stylesheet" href="/plugins/dropzone-4.2.0/dropzone.css">
	<script src="/plugins/dropzone-4.2.0/dropzone.js"></script>

<script src="/js/libs/emojify-1.1.0.min.js"></script>
<script src="/js/libs/clipboard-1.5.9.min.js"></script>
	
</html>

